??, if let 和 guard 语法

??操作符号 相当于简单的三目运算 ??的使用 (a ?? b) 如果a有值那就用a的值 如果没有值就用'??'后面的来代替

1
2
3
 var a : Int? ;
 let b: Int? = 20
 print((a ?? 40) + (b ?? 0)) //结果:60

if let / if var if let 和 if var 连用语法 目的:据说用来判断值是否为nil[空],不是单纯的if【if let / if var 在赋值的同时做判断而if只做判断】

if let 对{}中的值不能做修改

1
2
3
4
5
6
 var count: Int? = 100
 if let validCount = count {//如果count有值的话,把count的值赋给validCount,且条件为true;如果count为nil,则执行else
    print( "count is " + String(validCount)  )  //count的值为100
 } else {
    print(  "nil")
 }

if var对{}中的值可做修改

1
2
3
4
5
6
7
 var count: Int? = 100
 if var validCount = count {//如果count有值的话,把count的值赋给validCount,且条件为true;如果count为nil,则执行else
    validCount += 10
    print( "count is " + String(validCount)  )  //count的值为100
 } else {
    print(  "nil")
 }

guard let / guard var guard let 和 if let刚好相反 guard 守护一定有值,如果没有值 就直接返回

guard let

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
 func getPeople () {
    var name: String?
    var  age: Int?
    name = "lilei"
    age = 20
    guard let name1 = name,let age1 = age else {
        print("此人不存在")
        return
    }
    print(name1 + "   " + String(age1))
 }
 getPeople()   // 输出结果为 : lilei   20

guard var

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
 func getPeople () {
    var name: String?
    var  age: Int?
    name = "lilei"
    age = 20
    guard var name1 = name,var age1 = age else {
        print("此人不存在")
        return
    }
    name1 = "hebe"  //值可以修改
    age1 = 25
    print(name1 + "   " + String(age1))
 }
 getPeople()   // 输出结果为 : hebe   25 

if case Swift中的if case主要用于模式匹配。跟switch很类似,但它本身有特别的使用场景,区别switch在于,switch用于对所有的对象可能值进行判断,而if case之需要对关注的可能值进行判断。

1
2
3
4
5
6
7
8
9
   enum CarBrand{
     case  BMW
     case  AUDI
     case  BENZ
    }
  let myBrand = CarBrand.BMW
  if case .BMW = myBrand{
     print("宝马")
  }